home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
drdobbs
/
1990
/
10
/
schatz.asc
< prev
next >
Wrap
Text File
|
1990-08-16
|
4KB
|
223 lines
_UNRAVELING OPTIMIZATION IN MICROSOFT C 6.0_
by Bruce D. Schatzman
[LISTING ONE]
#include <stdio.h>
long area[3];
void compute_areas(void);
main()
{
int i;
extern long area[3];
compute_areas();
for(i = 0; i <= 2; i++) printf("The approximate area of function %d is %ld\n", i, area[i]);
}
void compute_areas(void)
{ long temp, y0[100], y1[100], y2[100];
extern long area[3];
int i, k, a, b, c, d, n, m, j;
a = 2; b = 5; c = 1; d = 3;
area[0] = area[1] = area[2] = temp = 0;
/* compute 100 initial y values for all functions and approximate area under curves. Do this 100 times. */
for (i = 0; i <= 99; i++) {
for (j = 0; j <= 99; j++) {
n = j-1;
m = j+1;
y0[j] = a*j*n + 48*j - (c+d);
y1[j] = d*(j+10) + a*b;
y2[j] = c*j*m + 73*j*j + n;
}
}
/* add a*b+c+d to all y values. Do this 100 times. */
for (i = 0; i <= 99; i++) {
for (j = 0; j <= 99; j++) {
y0[j] += a*b+c+d;
y1[j] += a*b+c+d;
y2[j] += a*b+c+d;
}
}
/* bubblesort each array */
for (i = 0; i <= 99; i++) {
for (k = 99; k >= 1; k--) {
if (y0[k-1] > y0[k]) {
temp = y0[k];
y0[k] = y0[k-1];
y0[k-1] = temp;
}
if (y1[k-1] > y1[k]) {
temp = y1[k];
y1[k] = y1[k-1];è y1[k-1] = temp;
}
if (y2[k-1] > y2[k]) {
temp = y2[k];
y2[k] = y2[k-1];
y2[k-1] = temp;
}
}
}
/* now compute areas */
for (j = 0; j <= 99; j++) {
area[0] += y0[j];
area[1] += y1[j];
area[2] += y2[j];
}
return;
}
[LISTING TWO]
#include <stdio.h>
long area[3];
void compute_areas(void);
main()
{
int i;
extern long area[3];
compute_areas();
for(i = 0; i <= 2; i++) printf("The approximate area of function %d is %ld\n", i, area[i]);
}
void compute_areas(void)
{ long temp, y0[100], y1[100], y2[100];
extern long area[3];
int i, k, a, b, c, d, n, m, j;
a = 2; b = 5; c = 1; d = 3;
area[0] = area[1] = area[2] = temp = 0;
/* compute 100 initial y values for all functions and approximate area under curves. Do this 100 times. */
for (i = 0; i <= 99; i++) {
for (j = 0; j <= 99; j++) {
n = j-1;
m = j+1;
y0[j] = a*j*n + 48*j - 4;
y1[j] = d*j +40;
y2[j] = c*j*j*m - 73*j*j;
}
}
/* add 14 to all y values. Do this 100 times. */è for (i = 0; i <= 99; i++) {
for (j = 0; j <= 99; j++) {
y0[j] += 14;
y1[j] += 14;
y2[j] += 14;
}
}
/* bubblesort each array */
for (i = 0; i <= 99; i++) {
for (k = 99; k >= 1; k--) {
if (y0[k-1] > y0[k]) {
temp = y0[k];
y0[k] = y0[k-1];
y0[k-1] = temp;
}
if (y1[k-1] > y1[k]) {
temp = y1[k];
y1[k] = y1[k-1];
y1[k-1] = temp;
}
if (y2[k-1] > y2[k]) {
temp = y2[k];
y2[k] = y2[k-1];
y2[k-1] = temp;
}
}
}
/* now compute areas */
for (j = 0; j <= 99; j++) {
area[0] += y0[j];
area[1] += y1[j];
area[2] += y2[j];
}
return;
}
[LISTING THREE]
#include <stdio.h>
long area[3];
void compute_areas(void);
main()
{
int i;
extern long area[3];
compute_areas();
for(i = 0; i <= 2; i++) printf("The approximate area of function %d is %ld\n", i, area[i]);
}
void compute_areas(void)è{ long temp, y0[100], y1[100], y2[100];
extern long area[3];
int i, k, j;
area[0] = area[1] = area[2] = temp = 0;
/* compute 100 initial y values for all functions and approximate area under curves. Do this 100 times. */
for (i = 0; i <= 99; i++) {
for (j = 0; j <= 99; j++) {
y0[j] = 2*j*j - 50*j +10;
y1[j] = 3*j + 54;
y2[j] = j*j*j - 72*j + 14;
}
}
/* bubblesort each array */
for (i = 0; i <= 99; i++) {
for (k = 99; k >= 1; k--) {
if (y0[k-1] > y0[k]) {
temp = y0[k];
y0[k] = y0[k-1];
y0[k-1] = temp;
}
if (y1[k-1] > y1[k]) {
temp = y1[k];
y1[k] = y1[k-1];
y1[k-1] = temp;
}
if (y2[k-1] > y2[k]) {
temp = y2[k];
y2[k] = y2[k-1];
y2[k-1] = temp;
}
}
}
/* now compute areas */
for (j = 0; j <= 99; j++) {
area[0] += y0[j];
area[1] += y1[j];
area[2] += y2[j];
}
return;
}
[Example 1. ]
void main(void)
{
int x, y, *p;
p = &x;
x = 1; y = 2; z = 6
for(k = 1; k <= 100; k++) {è k += x + y + z;
*p = k;
}
)